From 751686de4f5f0a557c02fd9962f6c4140105b153 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=C3=98yvind=20Kol=C3=A5s?= Date: Tue, 6 Jun 2006 21:07:08 +0000 Subject: [PATCH] preinitialize known formats --- ChangeLog | 9 ++ babl/base/Makefile.am | 1 + babl/base/babl-base.c | 2 + babl/base/formats.c | 338 ++++++++++++++++++++++++++++++++++++++++++ 4 files changed, 350 insertions(+) create mode 100644 babl/base/formats.c diff --git a/ChangeLog b/ChangeLog index 69ef11d..118cdc8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2006-06-06 Øyvind Kolås + + Register all the formats that the gggl based conversions use in + babl-base. This allows a string based short hand vocabulary of format + names that can be expected to exist. + + * babl/base/Makefile.am: added formats.c + * babl/base/babl-base.c: (babl_base_init): initialize formats. + 2006-06-06 Øyvind Kolås Added conversions based on gggl that assume no gamma in their diff --git a/babl/base/Makefile.am b/babl/base/Makefile.am index 56f4318..adbb139 100644 --- a/babl/base/Makefile.am +++ b/babl/base/Makefile.am @@ -4,6 +4,7 @@ h_sources = \ c_sources = \ babl-base.c \ + formats.c \ type-float.c \ type-u8.c \ type-u16.c \ diff --git a/babl/base/babl-base.c b/babl/base/babl-base.c index 38cf6d6..20d8cc2 100644 --- a/babl/base/babl-base.c +++ b/babl/base/babl-base.c @@ -19,6 +19,7 @@ extern int babl_hmpf_on_name_lookups; +void babl_formats_init (void); static void types (void); static void models (void); @@ -29,6 +30,7 @@ babl_base_init (void) types (); models (); + babl_formats_init (); babl_hmpf_on_name_lookups --; } diff --git a/babl/base/formats.c b/babl/base/formats.c new file mode 100644 index 0000000..6573398 --- /dev/null +++ b/babl/base/formats.c @@ -0,0 +1,338 @@ +/* babl - dynamically extendable universal pixel conversion library. + * Copyright (C) 2006, Øyvind Kolås. + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General + * Public License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place, Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#include "babl.h" +#include "babl-ids.h" + +void +babl_formats_init (void) +{ + babl_format_new ( + babl_model_id (BABL_RGBA_GAMMA_2_2), + babl_type_id (BABL_DOUBLE), + babl_component_id (BABL_RED_GAMMA_2_2), + babl_component_id (BABL_GREEN_GAMMA_2_2), + babl_component_id (BABL_BLUE_GAMMA_2_2), + babl_component_id (BABL_ALPHA), + NULL); + babl_format_new ( + babl_model_id (BABL_RGBA_GAMMA_2_2), + babl_type_id (BABL_FLOAT), + babl_component_id (BABL_RED_GAMMA_2_2), + babl_component_id (BABL_GREEN_GAMMA_2_2), + babl_component_id (BABL_BLUE_GAMMA_2_2), + babl_component_id (BABL_ALPHA), + NULL); + babl_format_new ( + babl_model_id (BABL_RGBA_GAMMA_2_2), + babl_type_id (BABL_U16), + babl_component_id (BABL_RED_GAMMA_2_2), + babl_component_id (BABL_GREEN_GAMMA_2_2), + babl_component_id (BABL_BLUE_GAMMA_2_2), + babl_component_id (BABL_ALPHA), + NULL); + babl_format_new ( + babl_model_id (BABL_RGBA_GAMMA_2_2), + babl_type_id (BABL_U8), + babl_component_id (BABL_RED_GAMMA_2_2), + babl_component_id (BABL_GREEN_GAMMA_2_2), + babl_component_id (BABL_BLUE_GAMMA_2_2), + babl_component_id (BABL_ALPHA), + NULL); + babl_format_new ( + babl_model_id (BABL_RGBA_GAMMA_2_2_PREMULTIPLIED), + babl_type_id (BABL_FLOAT), + babl_component_id (BABL_RED_GAMMA_2_2_MUL_ALPHA), + babl_component_id (BABL_GREEN_GAMMA_2_2_MUL_ALPHA), + babl_component_id (BABL_BLUE_GAMMA_2_2_MUL_ALPHA), + babl_component_id (BABL_ALPHA), + NULL); + babl_format_new ( + babl_model_id (BABL_RGBA_GAMMA_2_2_PREMULTIPLIED), + babl_type_id (BABL_U16), + babl_component_id (BABL_RED_GAMMA_2_2_MUL_ALPHA), + babl_component_id (BABL_GREEN_GAMMA_2_2_MUL_ALPHA), + babl_component_id (BABL_BLUE_GAMMA_2_2_MUL_ALPHA), + babl_component_id (BABL_ALPHA), + NULL); + babl_format_new ( + babl_model_id (BABL_RGBA_GAMMA_2_2_PREMULTIPLIED), + babl_type_id (BABL_U8), + babl_component_id (BABL_RED_GAMMA_2_2_MUL_ALPHA), + babl_component_id (BABL_GREEN_GAMMA_2_2_MUL_ALPHA), + babl_component_id (BABL_BLUE_GAMMA_2_2_MUL_ALPHA), + babl_component_id (BABL_ALPHA), + NULL); + babl_format_new ( + babl_model_id (BABL_RGB_GAMMA_2_2), + babl_type_id (BABL_FLOAT), + babl_component_id (BABL_RED_GAMMA_2_2), + babl_component_id (BABL_GREEN_GAMMA_2_2), + babl_component_id (BABL_BLUE_GAMMA_2_2), + NULL); + babl_format_new ( + babl_model_id (BABL_RGB_GAMMA_2_2), + babl_type_id (BABL_U16), + babl_component_id (BABL_RED_GAMMA_2_2), + babl_component_id (BABL_GREEN_GAMMA_2_2), + babl_component_id (BABL_BLUE_GAMMA_2_2), + NULL); + babl_format_new ( + babl_model_id (BABL_RGB_GAMMA_2_2), + babl_type_id (BABL_U8), + babl_component_id (BABL_RED_GAMMA_2_2), + babl_component_id (BABL_GREEN_GAMMA_2_2), + babl_component_id (BABL_BLUE_GAMMA_2_2), + NULL); + babl_format_new ( + babl_model_id (BABL_GRAY_GAMMA_2_2_ALPHA), + babl_type_id (BABL_FLOAT), + babl_component_id (BABL_LUMA), + babl_component_id (BABL_ALPHA), + NULL); + babl_format_new ( + babl_model_id (BABL_GRAY_GAMMA_2_2_ALPHA_PREMULTIPLIED), + babl_type_id (BABL_FLOAT), + babl_component_id (BABL_LUMA_MUL_ALPHA), + babl_component_id (BABL_ALPHA), + NULL); + babl_format_new ( + babl_model_id (BABL_GRAY_GAMMA_2_2), + babl_type_id (BABL_FLOAT), + babl_component_id (BABL_LUMA), + NULL); + babl_format_new ( + babl_model_id (BABL_GRAY_GAMMA_2_2_ALPHA), + babl_type_id (BABL_U16), + babl_component_id (BABL_LUMA), + babl_component_id (BABL_ALPHA), + NULL); + babl_format_new ( + babl_model_id (BABL_GRAY_GAMMA_2_2_ALPHA_PREMULTIPLIED), + babl_type_id (BABL_U16), + babl_component_id (BABL_LUMA_MUL_ALPHA), + babl_component_id (BABL_ALPHA), + NULL); + babl_format_new ( + babl_model_id (BABL_GRAY_GAMMA_2_2), + babl_type_id (BABL_U16), + babl_component_id (BABL_LUMA), + NULL); + babl_format_new ( + babl_model_id (BABL_GRAY_GAMMA_2_2_ALPHA), + babl_type_id (BABL_U8), + babl_component_id (BABL_LUMA), + babl_component_id (BABL_ALPHA), + NULL); + babl_format_new ( + babl_model_id (BABL_GRAY_GAMMA_2_2_ALPHA_PREMULTIPLIED), + babl_type_id (BABL_U8), + babl_component_id (BABL_LUMA_MUL_ALPHA), + babl_component_id (BABL_ALPHA), + NULL); + babl_format_new ( + babl_model_id (BABL_GRAY_GAMMA_2_2), + babl_type_id (BABL_U8), + babl_component_id (BABL_LUMA), + NULL); + babl_format_new ( + "name", "Y'CbCr u8", + babl_model_id (BABL_YCBCR), + babl_type_id (BABL_U8_LUMA), + babl_component_id (BABL_LUMA), + babl_type_id (BABL_U8_CHROMA), + babl_component_id (BABL_CB), + babl_component_id (BABL_CR), + NULL); + babl_format_new ( + babl_model_id (BABL_YCBCR), + babl_type_id (BABL_FLOAT), + babl_component_id (BABL_LUMA), + babl_type_id (BABL_FLOAT), + babl_component_id (BABL_CB), + babl_component_id (BABL_CR), + NULL); + babl_format_new ( + babl_model_id (BABL_YCBCR), + babl_type_id (BABL_FLOAT), + babl_component_id (BABL_LUMA), + babl_type_id (BABL_FLOAT), + babl_component_id (BABL_CB), + babl_component_id (BABL_CR), + babl_component_id (BABL_ALPHA), + NULL); + babl_format_new ( + babl_model_id (BABL_RGBA), + babl_type_id (BABL_FLOAT), + babl_component_id (BABL_RED), + babl_component_id (BABL_GREEN), + babl_component_id (BABL_BLUE), + babl_component_id (BABL_ALPHA), + NULL); + babl_format_new ( + babl_model_id (BABL_RGBA), + babl_type_id (BABL_U16), + babl_component_id (BABL_RED), + babl_component_id (BABL_GREEN), + babl_component_id (BABL_BLUE), + babl_component_id (BABL_ALPHA), + NULL); + babl_format_new ( + babl_model_id (BABL_RGBA), + babl_type_id (BABL_DOUBLE), + babl_component_id (BABL_RED), + babl_component_id (BABL_GREEN), + babl_component_id (BABL_BLUE), + babl_component_id (BABL_ALPHA), + NULL); + babl_format_new ( + babl_model_id (BABL_RGBA), + babl_type_id (BABL_U8), + babl_component_id (BABL_RED), + babl_component_id (BABL_GREEN), + babl_component_id (BABL_BLUE), + babl_component_id (BABL_ALPHA), + NULL); + babl_format_new ( + babl_model_id (BABL_RGBA_PREMULTIPLIED), + babl_type_id (BABL_FLOAT), + babl_component_id (BABL_RED_MUL_ALPHA), + babl_component_id (BABL_GREEN_MUL_ALPHA), + babl_component_id (BABL_BLUE_MUL_ALPHA), + babl_component_id (BABL_ALPHA), + NULL); + babl_format_new ( + babl_model_id (BABL_RGBA_PREMULTIPLIED), + babl_type_id (BABL_U16), + babl_component_id (BABL_RED_MUL_ALPHA), + babl_component_id (BABL_GREEN_MUL_ALPHA), + babl_component_id (BABL_BLUE_MUL_ALPHA), + babl_component_id (BABL_ALPHA), + NULL); + babl_format_new ( + babl_model_id (BABL_RGBA_PREMULTIPLIED), + babl_type_id (BABL_U8), + babl_component_id (BABL_RED_MUL_ALPHA), + babl_component_id (BABL_GREEN_MUL_ALPHA), + babl_component_id (BABL_BLUE_MUL_ALPHA), + babl_component_id (BABL_ALPHA), + NULL); + babl_format_new ( + babl_model_id (BABL_RGB), + babl_type_id (BABL_FLOAT), + babl_component_id (BABL_RED), + babl_component_id (BABL_GREEN), + babl_component_id (BABL_BLUE), + NULL); + babl_format_new ( + babl_model_id (BABL_RGB), + babl_type_id (BABL_U16), + babl_component_id (BABL_RED), + babl_component_id (BABL_GREEN), + babl_component_id (BABL_BLUE), + NULL); + babl_format_new ( + babl_model_id (BABL_RGB), + babl_type_id (BABL_U8), + babl_component_id (BABL_RED), + babl_component_id (BABL_GREEN), + babl_component_id (BABL_BLUE), + NULL); + babl_format_new ( + babl_model_id (BABL_GRAY_ALPHA), + babl_type_id (BABL_FLOAT), + babl_component_id (BABL_LUMINANCE), + babl_component_id (BABL_ALPHA), + NULL); + babl_format_new ( + babl_model_id (BABL_GRAY_ALPHA_PREMULTIPLIED), + babl_type_id (BABL_FLOAT), + babl_component_id (BABL_LUMINANCE_MUL_ALPHA), + babl_component_id (BABL_ALPHA), + NULL); + babl_format_new ( + babl_model_id (BABL_GRAY), + babl_type_id (BABL_FLOAT), + babl_component_id (BABL_LUMINANCE), + NULL); + babl_format_new ( + babl_model_id (BABL_GRAY_ALPHA), + babl_type_id (BABL_U16), + babl_component_id (BABL_LUMINANCE), + babl_component_id (BABL_ALPHA), + NULL); + babl_format_new ( + babl_model_id (BABL_GRAY_ALPHA_PREMULTIPLIED), + babl_type_id (BABL_U16), + babl_component_id (BABL_LUMINANCE_MUL_ALPHA), + babl_component_id (BABL_ALPHA), + NULL); + babl_format_new ( + babl_model_id (BABL_GRAY), + babl_type_id (BABL_U16), + babl_component_id (BABL_LUMINANCE), + NULL); + babl_format_new ( + babl_model_id (BABL_GRAY_ALPHA), + babl_type_id (BABL_U8), + babl_component_id (BABL_LUMINANCE), + babl_component_id (BABL_ALPHA), + NULL); + babl_format_new ( + babl_model_id (BABL_GRAY_ALPHA_PREMULTIPLIED), + babl_type_id (BABL_U8), + babl_component_id (BABL_LUMINANCE_MUL_ALPHA), + babl_component_id (BABL_ALPHA), + NULL); + babl_format_new ( + babl_model_id (BABL_GRAY), + babl_type_id (BABL_U8), + babl_component_id (BABL_LUMINANCE), + NULL); + + /* overriding name, since the generated name would be wrong due + * to differing types + */ + babl_format_new ( + "name", "Y'CbCr u8", + babl_model_id (BABL_YCBCR), + babl_type_id (BABL_U8_LUMA), + babl_component_id (BABL_LUMA), + babl_type_id (BABL_U8_CHROMA), + babl_component_id (BABL_CB), + babl_component_id (BABL_CR), + NULL); + babl_format_new ( + babl_model_id (BABL_YCBCR), + babl_type_id (BABL_FLOAT), + babl_component_id (BABL_LUMA), + babl_type_id (BABL_FLOAT), + babl_component_id (BABL_CB), + babl_component_id (BABL_CR), + NULL); + babl_format_new ( + babl_model_id (BABL_YCBCR_ALPHA), + babl_type_id (BABL_FLOAT), + babl_component_id (BABL_LUMA), + babl_type_id (BABL_FLOAT), + babl_component_id (BABL_CB), + babl_component_id (BABL_CR), + babl_component_id (BABL_ALPHA), + NULL); +} -- 2.30.2